<?php
/**
 * Game_Building_Item
 *
 * Класс Game_Building_Item отвечает за конкретных зданий
 *
 * @author Дмитрий Кузьма <kouzma.d@gmail.com>
 * @version 1.0
 */
abstract class Game_Building_Item {
	
	public $objBuilding;// объект здания из БД;
	
	/**
	 * Конструктор объекта (создание, инициализация, загрузка данных)
	 *
	 * @param Game_Building $objBuilding - объект здание (информация из БД)
	 */
	public function __construct(Game_Building $objBuilding) {
		$this->objBuilding = $objBuilding;
	}
	
		/**
		 * Возвращает информация о свойствах.
		 * Многомерный массив по уровням. Текущее, следующее, через уровень.
		 * 
		 * @param int $level - текущий уровень здания
		 * 
		 * @return array
		 */
	public function getPropertiesInfo($level) {
		$arrInfoByLevels = array();
		for($currentLevel = $level; $currentLevel <= 20 && $currentLevel < $level + 3; $currentLevel++) {
				
			$arrInfoByLevels[$currentLevel] = $this->getLevelPropertyInfo($currentLevel, $currentLevel == $level);
		}
		return $arrInfoByLevels;
	}
	
	/**
	 * Возвращает информацию о свойствах конкретного уровня
	 *
	 * @param int $level
	 * @param bull $isCurrentLevel
	 * @return array
	 */
	abstract public function getLevelPropertyInfo ($level, $isCurrentLevel = false);
	
	
	/**
	 * Определяет производство культуры здание на определенном уровне
	 * 
	 * @param int $level
	 * @param int $cultureBase
	 */
	public static function getBuldingCultureProduction(array $arrBuilding) {
		return round($arrBuilding['culture'] * pow(1.2, $arrBuilding['level']));
	}
	

	
}
?>